<?php

declare(strict_types=1);

namespace app\customer\service;

use app\customer\model\CustomerContact as CustomerContactModel;

class CustomerContact
{


    /**
     * @describe 获取联系人列表
     * @author: Bobo
     * @date: 2024-06-05 18:02:26 
     * @param [] type
     * @return Renderable
     */
    public function getList(array $where, int $page, int $limit)
    {

        // 返回联系人列表数据，包括总数和分页数据
        return [
            'total' => CustomerContactModel::where($where)->count(),
            'list' => CustomerContactModel::where($where)
                ->page($page, $limit)
                ->append(['creator_value', 'updater_value', 'cusid_value'])
                ->select()->toArray()
        ];
    }

    /**
     * 获取联系人详情
     * @param int $id 联系人ID
     */
    public function getOneById($id)
    {
        $customerContact = CustomerContactModel::find($id);
        if ($customerContact) {
            $customerContact->append(['creator_value', 'updater_value', 'cusid_value']);
        }
        return $customerContact;
    }

    /**
     * 创建联系人
     * @param array $data 创建联系人的数据
     */
    public function create($data)
    {
        return CustomerContactModel::create($data);
    }

    /**
     * 更新联系人
     * @param int $id 联系人ID
     * @param array $data 更新联系人的数据
     */
    public function update($data)
    {
        $res = CustomerContactModel::where('id', $data['id'])->find();
        if (!$res) {
            return false;
        }
        foreach ($data as $key => $value) {
            if ($res->$key != $value) {
                $res->$key = $value;
            }
        }
        return $res->save();
    }

    /**
     * 删除联系人
     * @param int $id 联系人ID
     */
    public function delete($id)
    {
        return CustomerContactModel::where('id', $id)->delete();
    }

    /**
     * @describe 批量逻辑删除联系人
     * @author: Bobo
     * @date: 2024-06-26 14:53:00 
     * @param [arr] @required $ids ID数组
     * @return Renderable
     */
    public function batchLogicalDelete($ids)
    {
        return CustomerContactModel::where('id', 'in', $ids)->update(['is_del' => time()]);
    }
}
